package com.baofu.paycore.manager.model;

import com.baofu.paycore.dal.model.SubTransferDO;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;

import java.util.List;
import java.util.Objects;

/**
 * 支付模型
 *
 * User: LZQ Date: 2016/04/20  Version: 1.0
 */
@Slf4j
@Getter
@Setter
@ToString(callSuper = true)
public class TransferBO extends PayBaseBO {

    /**
     * 事件号
     */
    private String eventNo;

    /**
     * 冻结码
     */
    private String freezeCode;

    /**
     * 业务收费金额
     */
    private long bizChargeAmt;

    /**
     * 业务手续费账户(出)
     */
    private String bizFeeAccount;

    /**
     * 撤销标示
     */
    private String cancelFlag;

    /**
     * 收费标识
     * FlagEnum:
     *          TRUE: 手续费收取交易单
     *          FALSE: 正常转账交易单
     */
    private String feeFlag;

    /**
     * 资金单
     */
    private List<SubTransferDO> subTransferDO;

    /**
     * 原转账单
     */
    private TransferBO oldTransferBO;

    /**
     * 获取指定资金类型的资金单
     *
     * @param fundType  资金类型
     * @return          子资金单
     */
    public SubTransferDO getSubTransferDO(String fundType){
        for (SubTransferDO subTransfer : subTransferDO){
            if (Objects.equals(subTransfer.getFundType(), fundType)){
                return subTransfer;
            }
        }
        log.error("此类型资金单不存在:{}", fundType);
        return null;
    }

    /**
     * 模型检查
     */
    @Override
    public void consistencyCheck() {

    }

    /**
     * 状态检查
     */
    @Override
    public void checkStatus() {

    }
}
